import { defineStore } from 'pinia'
import {login} from '@/api/user'

// 第一个参数，存储的id
export const useUsersStore = defineStore('users',{
	// 具体数据
	// state => 要存储的数据
	state:() => {
		return {
			name: "",
			age: 0,
			token: ""
		}
	},
	// getters => 获取复杂的数据时, 定义了一些函数
	getters: {
		// number => 函数返回值(必加) , this表示的当前的存储
		// 给函数加参数时，stat会传递进去
		getAge(): number {
			return this.age+100
		},
		getAge2: (state) => {
		    return state.age + 100
		}
		// error 
		// getAge2: () => {
		//       return this.age + 100
		// }
	},
	// actions => 复杂的写数据操作
	actions: {
		saveName(name, token){
			this.name = name
			this.token = token
		},
		login(data){
			// 发起请求
			console.log("store login 发起请求:", data)
			// 让api/user下的login发起请求
			return new Promise((resolve)=>{
				login(data)
				.then(res=>{
					// localStorage.setItem("username1",res.data.username)
					// 存储token
					
					console.log("存储token", res)
					this.saveName(res.data.username, res.data.token)
					resolve(res)
				})
			})
		}
	},
	// 持久化存储插件，开启数据缓存
	persist: {
		enabled: true,
		strategies: [
			{
				key: 's_user',
				storage: localStorage,
			}
		]
	}
})